home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-10 | 21.5 KB | 432 lines | [TEXT/ALFA] |
- uupc 3.0 documentation notes [beta testing release]
- -----------------------------------------------------
- written by Dave Platt <dplatt@snulbug.mtview.ca.us>
-
-
- This package contains a beta-test version of uupc 3.0 for the
- Macintosh.
-
- This distribution contains the first draft of the "how to install
- it" notes I've written up, in anticipation of the full uupc 3.0
- general release. I would very much appreciate your comments and
- suggestions. The files are in the "Documentation" folder. The
- "Protocol notes" and "Modems and cables" files touch on some
- advanced topics, and you should read the other files before
- tackling these.
-
- The beta version has the following changes (and perhaps others
- I've forgotten to mention):
-
- * 3.0b30: set default memory partition size to 250k (down from the
- 384k of 3.0b29, but up from the 200k of earlier releases). Fixed
- a bug introduced with the large-packet support; the 'g' protocol
- should disconnect after 20 consecutive errors, not 20 errors in
- any one session. Connections which terminate prematurely due to
- file I/O problems will result in a "failed session" status being
- stored in the status file, thus allowing the HoneyDanBer-style
- fallback to work in this case as well as after failed calls.
- Fixed a bug in the 'f' protocol retry logic. Increased size of
- buffers used during protocol startup, to prevent stack trashing
- and subsequent crashes if remote site sends garbage and disconnects
- during the handshaking sequence. Fixed bug in timeout-recovery
- code which could stomp on memory and hang Mac. Fixed dialer so
- that calling "All sites" doesn't initiate a slave-mode INCOMING
- call.
-
- * 3.0b29: added support for large packets in the 'g' protocol (up
- to 256 bytes per packet). Added error-checking code to the
- rdata() routine so that disk I/O errors during file reception will
- result in a "copy failed" status. Added support for extra serial
- ports which have shadow drivers (port 'c' opens device .Cin/.Cout,
- 'd' opens .Din/.Dout, etc.). Added code to execute pending
- inbound jobs in the queue at the beginning of a queue run as well
- as at the end, to ensure a timely queue-flush if a previous uupc
- session aborted. Changed name format of inbound-rnews files to
- "rnews.mmddyy.hhmmss.xxx" to make it clearer what's in these
- files).
-
- * 3.0b28: fixed the serial-port timeout code to permit read
- timeouts of greater than 32765 ticks... this bug was preventing
- SLEEPTIME values of 6 minutes or more from working properly when
- uupc was waiting for an inbound call to arrive. Added a Sam
- Kinnison filter to the expect-string matcher... it will now
- report "match failure" after 3k bytes of input even if a timeout
- hasn't occurred, to detect situations in which the modem or remote
- host is sending a steady stream of gibberish. Added support for
- 38400- and 57600-bit/second serial connections. Modified
- primitive "rnews" command to copy the inbound file to the spool
- directory in binary mode rather than text mode, to allow for
- support of compressed newsbatches.
-
- * 3.0b27: after placing a call, sending outbound files, and
- receiving one or more inbound files, re-check the spool directory
- when the remote site offers to hang up... if new outbound files
- have appeared while we were receiving, decline the hangup offer
- and go back to the send-files phase. This _is_ a multitasking
- system, after all!
-
- * 3.0b26: fixed a bug in scandir() introduced in 3.0b25. Changed
- the example configuration file to use Macintosh-style pathnames
- rather than Unix-style ones.
-
- * 3.0b25: modified scandir() so that it compares only the first
- seven characters of the remote host's name with the corresponding
- characters in a C. file's name. This allows outbound files to be
- sent to systems whose names are longer than seven characters.
-
- * 3.0b24: allow a Quit command (or a Shutdown or Restart from the
- Finder) to terminate a wait for an inbound call.
-
- * 3.0b23: added the ability to shut down the Mac after placing a
- set of calls. To invoke this feature, launch uupc by double-
- clicking on a uupc call-initiator file whose name ends in the
- string " -Shutdown" (the "S" must be capitalized). For example, a
- file named "need -Shutdown" will place a call to any sites which
- are scheduled to receive calls, or which have work pending; uupc
- will shut down the Mac after the end of the last call in the
- sequence.
-
- * 3.0b22: fixed yet another bug in the Mac-format-path handler
- which prevented spool folders from being handled properly, if the
- spool directory was "aimed" at a disk other than the one on which
- the uupc/pcmail programs resided. NOTE: do not use partial
- pathnames in Macintosh format (":dir:dir")... these are always
- interpreted according to the Macintosh semantic (they're relative
- to the current directory), and the current directory changes as
- the programs run. Bad Things occur...
-
- * 3.0b21: modified the THINK C ANSI file I/O library so that it
- doesn't flush volume buffers to disk when closing a read-only
- file. This fix reduces disk-chattering and improves performance;
- it shouldn't have any other effect on the program. Also fixed a
- hairy bug which caused the b20-revision directory-building code to
- create two partially-complete hierarchies of directories if the
- "diskname:dir:dir" format was used.
-
- * 3.0b20: the other-disk code in b19 could access existing (hand-
- created) folders on other disks, but could not create such folders
- on-the-fly. Fixed.
-
- * 3.0b19: fix the directory-locating code to permit folders on
- other than the default (application) volume to be used. Folders
- on other disks should be specified using Mac HFS notation (as
- "diskname:dir:dir:dir") rather than in Unix pathname format (using
- "/dir/dir/dir").
-
- * 3.0b18: fix the "rnews" command so that it doesn't go into an
- infinite loop, processing the same rnews command over and over and
- over. Internal reorganization of how pcmail.c is handled.
-
- * 3.0b17: minor bug-fixes, a full description of which I no longer
- recall.
-
- * 3.0b16: the time-of-day field in the INCOMING entry in the
- Systems file is now used to specify those times during which uupc
- will accept incoming phone calls. You are now required to have an
- entry of this form if you wish to accept calls in slave mode... it's
- no longer optional. You may have two or more INCOMING entries,
- with different time criteria, if you wish. If you invoke slave
- mode (or full-autopilot) at a time of day when incoming calls are
- not allowed, uupc will inform you of this fact and go to sleep for
- a few minutes, rather than camping on the phone. You can now
- control the amount of time that uupc sleeps between schedule runs,
- and the amount of time that it camps on the phone waiting for
- incoming calls, by setting a SLEEPTIME string in your
- configuration file to the number of minutes that you wish the
- program to sleep.
-
- * 3.0b15: increase size of printmsg buffer so that a very-long
- line in the Systems file doesn't blow the stack and crash the
- program if debugging mode is turned on (level 5 or above).
-
- * 3.0b14: don't go into an infinite loop if a D. file mentioned
- in a C. workfile does not exist or cannot be read. If the file
- doesn't exist, assume that it was sent during a previous session
- (which was, presumably, aborted before the workfile was completed)
- and continue normally. If any other I/O error occurs, terminate
- the session.
-
- * 3.0b13: add a "-quit" option (accessible only by burying the
- option in the name of a double-clickable launch file). Add an
- "Open a call file..." command to the File menu, thus allowing
- call-configuration files to be double-clicked from the Finder even
- if uupc is already running.
-
- * 3.0b12: allow debug level to be set to any value between 0 and
- 10, not just 0, 1, and 5.
-
- * 3.0b11: fix an uninitialized variable in the "time;retry"
- parsing code for the Systems file, so that the HDB exponential
- backoff feature works reliably. Honor the existing debug level
- when initiating calls from the "Call" menu, rather than forcing
- the debug level to 0.
-
- * 3.0b10: the real (I think!) fix for the alias-file-parser
- crashes on Mac Plus machines (amazing it didn't crash on other
- machines as well!). Now supports Systems-file entries which
- mention hosts whose name is longer than 7 characters. "Cancel
- call" command will now terminate the call at the end of the
- current work-file (if sending) or after the end of the current
- file transfer (if receiving). Updated sample Systems file to
- correct errors, clarify the "evening" and "night" time periods,
- and reflect the changes to the 'g' protocol negotiation.
-
- * 3.0b9: changed alias-file parser in an attempt to eliminate
- crashes on Mac Plus machines. Modified 'g' protocol negotiation
- so that it will negotiate a 3-packet window by default (like uupc
- 2.x) rather than a 7-packet window (like earlier 3.0 betas).
- 7-packet negotiation can be enabled by specifying 'g7' in the
- protocol field of a Systems-file line.
-
- * 3.0b8: another small bug in the 'g' protocol error recovery code
- bites the dust. Fixed the launch-from-a-file code so that it
- enables the menus properly. Fixed the level-9 debug code to
- display the expect strings and pending input.
-
- * 3.0b7: modified long-alias-line parser to keep the alias string
- in a relocatable handle rather than in a malloc() string, to
- reduce risk of memory fragmentation. Modified 'f' protocol packet
- reader to accept data from the serial port in big chunks if the
- data arrives quickly enough; this should increase 'f' protocol
- efficiency with fast modems, and/or leave more CPU time for other
- processes. Rewrote startup processing to allow uupc to place a
- call to any neighbor site(s), or initiate automatic or slave mode,
- based on the name of the document(s) from which uupc was launched.
- Extended the "expect" string parser to permit the match strings to
- contain escape strings: \s (blank), \r (return), \n (newline), \t
- (tab), or \\ (a single backslash).
-
- * 3.0b6: "Hey, Rocky! Wanna see me pull a 'g' protocol error
- recovery algorithm out of my hat?" "But that trick _never_ works!"
- "This time for sure! One! >NAK< Two >NAK<....." [The 1.11h engine
- needed a few small changes to avoid excessive NAKs,
- retransmissions, and session closures.] Added support for systems
- whose names are 8 characters or longer... uupc now sends the full
- nodename during handshaking, rather than only the first 7
- characters (but you can override this by adding a SHORTNAME
- resource string to your settings file), and takes care to compare
- only the leading 7 characters of it's peer's name during the
- handshake.
-
- * 3.0b5: added a "call as needed" mode (per schedule, or if work
- is waiting) in addition to the Full Metal Autopilot mode (which
- does the same, and also awaits incoming calls between times).
- Modified autopilot mode to ensure that inbound files received
- during the call-out phase are processed immediately (rather than
- after a five-minute-sleep awaiting an inbound call). Imported
- Drew Derbyshire's latest g protocol state engine from
- UUPC/extended 1.11h. Fixed remote-login shell to support "dumb"
- inbound connections (no modem handshaking or chat script...
- requires a carriage return to elicit the login prompt) as well as
- inbound connections initiated via the INCOMING alias (no carriage
- return required to get the prompt).
-
- * 3.0b4: yet more fixes to slave mode and the remote-login shell.
- Modified mailer code to support long aliases, of up to 255
- addresses (each line in the aliases file may be no more than 250
- characters or so... signal continuation by ending the line with a
- '\' character). Reduced the maximum length of an "rmail" command
- which will be executed on a peer system to 128 bytes, to avoid
- blowing uux command buffers.
-
- * 3.0b3: more fixes to slave mode (improved login-shell, less
- likely to be confused by line noise or leftover stuff from the
- modem chat sequence). Fixed the code which rejects a remote
- system's attempt to send or receive files to/from directories
- other than ~/; the wrong response code was being sent, and some
- Unix uucp systems would drop the line as a result. Tweaked serial
- I/O code to avoid reporting spurious timeouts when juggling
- processes under MultiFinder or System 7.
-
- * 3.0b2: fixes slave mode (I'd broken it). Added code to keep
- from crashing when certain events occur on machines that don't
- have the new Sound Manager. Changed error-recovery process in 'g'
- protocol engine to comply with recommendations made in DECUS
- paper.
-
- Changes since 2.1:
-
- - It has a real Macintosh menu-and-dialog-box front end, courtesy
- of Gary Morris at Telesoft, who sent me the complete source code
- for his "2.3" version of uupc. I've added a "Call" menu for
- convenience.
-
- - It's MultiFinder friendly [Gary Morris].
-
- - It has a cron-like call scheduler [Gary again].
-
- - It will no longer lose mail if the destination mailbox is being
- held open by another application... the spool files are kept
- rather than being discarded, and the rmail command will be
- re-executed during the next run. [Sak Wathanasin]
-
- - It honors the "time" field in the System file, so you can
- restrict the placing of calls to some of your neighbors to those
- times when the phone rates are low [Gary Morris again].
-
- - It allows you to specify some port setup information for use
- when handling incoming calls in slave mode (via a pseudo-neighbor
- named INCOMING, in the Systems file).
-
- - It supports anonymous uucp access, if you wish... simply add a
- pseudo-neighbor called ANONYMOUS to your Systems file, and it will
- accept calls from any uucp system in the world.
-
- - It supports an "automatic" or "background" or "unattended" or
- "autopilot" mode (I haven't settled on a name). In this mode, it
- will place outbound calls whenever there's work to be done, or
- when the schedule file says to call. Between outbound calls, it
- will answer inbound calls from other systems and run in slave
- mode.
-
- - It implements a HoneyDanBer-style exponential backoff algorithm
- for retrying calls to systems that it couldn't reach before.
- After one failure, it waits 5 minutes... after two, 10 minutes...
- after three, 20 minutes... and so forth, up to a maximum of 23
- hours. You can override this algorithm by specifying an explicit
- retry time in the "time" field (e.g. "Any;10" says that calls can
- be placed at any time of day, and retried after ten minutes). The
- backoff and explicit-retry times apply during calls to "all
- sites", "sites with work pending", "scheduled sites", and
- "autopilot mode". If you tell uupc 3.0 to dial a specific site,
- it will do so even if the retry interval has not run out.
-
- - It allows remote sites to request the sending of files from the
- anonymous-uucp directory ("~/filename"). It's also capable of
- requesting that a neighbor send it a specific file (I haven't yet
- written any user-agent code which would place such a request in
- the uupc spool directory... but if one is there, it should handle
- it OK). [Code adapted from the UUPC/extended 1.1.1c software
- package.... many people worked on this.]
-
- - It implements file-transfer security... any neighbor's request
- to send a file anywhere other than the standard spooling directory
- or the "~/" uucppublic directory, or to upload a file from
- anywhere other than these places, will be rejected. No such
- restrictions exist for transfers initiated by uupc itself.
- [Adapted from UUPC/extended 1.1.1c]
-
- - A new configuration string ROUTEVIA can specify a comma-
- separated list of neighboring sites to which uupc (and pcmail) may
- route mail if so requested by the user (or by an "rmail" command
- on an incoming mailgram). Mail to sites not on the ROUTVIA list
- will be passed to the MAILSERVICE neighbor as was done before.
- This is a long way from being a 'smartmailer', but it's enough to
- allow uupc 3.0 to act as a half-vast uucp forwarder... perhaps
- it's a 'not-entirely-dim mailer'?
-
- - The uucp 'g' protocol now supports a window of up to 7 packets,
- and will negotiate downwards to a smaller window if its peer
- requires. [UUPC/extended]
-
- - The uucp 'f' protocol is now supported. This protocol is
- designed to run over X.25 PAD connections; it also works pretty
- well over MNP and V.42 modem connections. The connections must be
- nearly-error-free, and flow-controlled; they don't need to support
- 8-bit data. uupc 3.0 activates XON/XOFF flow control when you use
- this protocol... you must tell your modem to do likewise in the
- dialing string. [Piet Beertema, CWI, Amsterdam, Sep 1984]
-
- - The serial-port routines now use non-blocking ("asynchronous")
- writes, so that uupc can be writing one packet at the same time
- that it's preparing the next one or processing ACKs. This leads
- to a substantial improvement in throughput at high speeds... I
- _think_ this will have fixed the incompatibility between uupc and
- Telebit modems. Somebody PLEASE test uupc 3.0 with a Telebit
- modem in spoofing mode, and tell me how well it works (or
- doesn't)!
-
- - I've added a rather crude dialer called VADIC, which works with
- a Racal-Vadic VS212 modem (thoroughly non-Hayes-compatible). The
- dialer works fine; I haven't used it since I got a better modem
- and put my Vadic back on the shelf.
-
- - The Hayes dialer is no longer limited to operation at 1200 and
- 2400 bps, but can be used with higher-speed modems as long as they
- accept a Hayes-compatible "AT" command set. It works fine, for
- example, with a USRobotics Courier HST Dual Standard modem using
- V.32 at 9600 bits/second.
-
- You must specify the modem's serial-port data rate in the Systems
- file... it's no longer intuited to be 1200 or 2400. ALL lines in
- the Systems file are now one field longer, as they all include a
- line speed as well as a "phone number" field. Put a "-" in the
- phone number field for direct-connect entries.
-
- - You can add additional characters to the "AT" command string
- which is used for the initial modem handshaking. To do this,
- specify a dialer of "HAYES+whatever". For example, "HAYES+&M0B0"
- will request the Hayes dialer, with a handshake of "AT&M0B0"
- (which tells a Dual Standard modem to use V.32 mode without MNP).
- You can use this capability to specify the modem's operating mode,
- assure that the response codes will be Hayes-compatible, and so
- forth.
-
- - When you write the expect/send string pairs in the Systems file,
- you can specify strings which (if received) will cause uupc to
- immediately abandon the attempt to connect and close the serial
- port. To do this, type the string you expect (_do_ want to
- receive), a bullet (ASCII 165, hex A5, option-8 on US-keyboards,
- [here represented as an asterisk]) the string which should
- trigger an abort (_don't_ want to receive), a space, and then
- the string you want to send in response to the expected string.
- For example if you're expecting a "Login:" prompt, and wish to
- disconnect immediately if a "Not available" message arrives
- instead type "Login:*available" as the string-you-expect-to-receive.
- If you wish, you can append several abort strings... e.g.
- "Login:*available*down" will proceed normally if the string
- "Login:" arrives, and will immediately disconnect if the strings
- "available" or "down" are received instead.
-
- - The Hayes dialer makes use of this abort-string feature; it will
- immediately abandon a dialing attempt if the modem returns a BUSY
- or NO CARRIER response. The abort strings are buried in the
- source code; if you want to change them you'll have to recompile.
-
- - uupc 3.0 will permit you to list several different phone numbers
- for a neighbor's uucp system. Simply duplicate the neighbor's
- line in your Systems file, and edit the second and subsequent
- lines to suit. You can specify different line speeds, and
- different chat sequences, if it's appropriate to do so. uupc 3.0
- will try these lines in sequence until it establishes a
- connection. It will _not_ establish multiple connections to a
- neighbor during any one session... if, for example, it gets
- through on line #2, it will not dial line #3.
-
- - uupc 3.0 is more domain-aware than uupc 2.1. If you've set up
- the DOMAIN and NODENAME string in your profile, then uupc 3.0 will
- "recognize" the following address formats on incoming mail:
-
- user user@domain
- nodename!user user%domain
- nodename!domain!user domain!user
-
-
- Mail which arrives with any of these address-styles in its
- envelope will be delivered to "USER" on your machine. uupc 2.1
- recognized only the first and last of these forms (I think...
- perhaps only the first!) and would "bounce" domain-addressed mail
- back out to your MAILSERVICE neighbor.
-
- - I've added a bunch of status messages to the uucp engine, and
- reworked some of the inter-layer flags so that the engine exits a
- bit more gracefully in the face of protocol errors, line hangups,
- and so forth.
-
- uupc 3.0 seems quite capable of keeping a V.32 modem busy, as long
- as the system at the other end of the phone line is able to keep
- up with packets arriving at 9600 bps. The throughput is quite
- good... sending data to an otherwise-unloaded SparcStation-1,
- using a 7-packet 'g' protocol, I got throughputs of 885
- characters/second of real user data. The theoretical limit is
- somewhere around 887 or 888, I think...
-
- Please send problem reports, suggestions, polite letterbombs, and
- so forth to me via email at "dplatt@snulbug.mtview.ca.us". I'll
- get back to you as fast as I can.
-
- Thanks! Happy beta-testing!
-
-
- Jan/29/1992
-